// 管理员-后端接口

// const { request, response } = require("express")
const express = require("express")
// 创建一个路由器
const router = express.Router()
// 引入数据库连接池
const pool = require("../../db/db.js")
// 引入ResponseData
const resData = require("../../utils/ResponseData")
// 引入jwt相关方法
const { generateToken } = require("../../auth/jwt")
/**
 * 平台管理员登录接口
 * 请求URL：http://localhost:3001/admin_login
 * 请求方式：post
 * 请求参数：d_admin,d_pwd
 * 
 * @param request：接收前端请求过来的数据
 * @param response：响应数据到前端
 */
router.post("/adminLogin", (request, response) => {
    console.log("------进入到了PetAdmin->admin_login", request.body)
    // 获取前端请求回来的数据
    const admin = request?.body?.d_admin || ''
    const pwd = request?.body?.d_pwd || ''
    // 编写sql语句 这里的?是占位符，后面我们用变量替换
    const sql = "select * from pet_admin where d_admin=? and d_pwd=?"
    // 执行sql语句
    // 参数1：sql语句，参数2：参数列表，元素顺序必须跟sql语句中的?完全一致，参数3：回调函数，处理返回值
    pool.query(sql, [admin, pwd], (err, data) => {
        if (err) {
            throw err // 有异常就抛出去
        }
        if (data.length == 0) {
            response.send(resData.error("登录失败，管理员信息不存在", 201))
        } else {
            // 平台管理员登录成功，需要再这里生成token
            const token = generateToken(data[0]?.d_id, 2)
            console.log("服务端token：", token)
            // 后端给前端响应信息：response.send({})
            response.send(resData.success({// 响应数据
                id: data[0]?.d_id,
                admin: data[0]?.d_admin,
                pic: data[0]?.d_pic,
                token: 'Bearer ' + token
            }, "管理员登录成功"))
        }
    })
})

module.exports = router

